A partir de los datos sacados de la web ExploitDB y de Twitter vamos a realizar un análisis para responder las siguientes preguntas:
El proyecto está compuesto por el proyecto principal, el cual llama a diferentes funciones para realizar y mostrar la correlación de los datos en el cual se basa este estudio, y un package, éste proporciona las funciones comentadas anteriormente, asi como su implementación y la obtención de los datos.
A continuación se exponen los resultados obtenidos de ExploitDB y se hace una comparativa de los exploits y vulnerabiliadades de los últimos 7 dÃas con los obtenidos a partir del 2000. El objetivo es contrastar si los datos de los últimos 7 dÃas se pueden considerar una buena muestra.
Después de la comparativa, se correlarán los exploits con los tweets de alrededor del mundo de la última semana. Se ha escogido este perÃodo de tiempo debido a que la API de Twitter està limitada.
Por último, se sacan unas conclusiones para determinar si con los datos obtenidos y el estudio realizado ha sido suficiente para responder las preguntas planteadas.
Nos nutrimos a base de un repositorio de Github. Éste pone a disposición de cualquier usuario un archivo csv con más de 37000 vulnerabilidades, que además es actualizado a diario. Cada vulnerabilidad nos proporciona información relevante como la id del exploit correspondiente en exploitDB, una descripción, la fecha de agregación a exploitDB, el autor, la plataforma a la cual afecta, el tipo de vulnerabilidad y una descripción mas especÃfica de este.
Obtenemos el fichero CSV mediante la función:
get_exploitdb_All <- function() {
csv <- RCurl::getURL("https://raw.githubusercontent.com/offensive-security/exploit-database/master/files.csv")
db <- read.csv(text = csv,stringsAsFactors = F)
return(db)
}
Si se analizan las dos gráficas, se puede observar claramente que con mucha diferencia las plataformas de PHP y Windows son las que mas exploits tienen. No obstante, los datos obtenidos de la última semana no es asÃ. Aunque sigue predominando Windows, muy empatado con los otros sistemas operativos Linux i OS X, PHP no tiene tanto peso.
Por lo tanto, cuando se haga la correlación se debe tener en cuenta que las plataformas con las que se ha cruzado la información con Twitter, no se pueden considerar como un resultado absoluto, no se deberÃa generalizar.
A continuación podemos ver la actividad que ha havido en twitter en las últimas 24 horas de las plataformas más susceptibles a ataques
En el caso de los exploits se ha visto que puede varÃar mucho entre semanas debido a que muchas veces los tipos vienen en bloque. Es decir, dada una vulnerabilidad pueden salir exploits diferentes pero del mismo tipo. Por lo tanto, no se deberÃa generalizar.
Cada uno de los tipos de exploits especificados en el apartado anterior tiene una descripción más especÃfica del la vulnerabilidad en cuestión. En este caso, es muy probable que los resultados sean diferentes entre si y por eso en la gráfica salen porcentages tan iguales. Como dato curioso, SQL injection és el tipo de vulnerabilidad mas exploitada en los últimos 20 años.
La api de twitter nos proporciona la información necesaria para el estudio que queremos realizar. Para ello obtenemos un json al mandar una query contra la api. Al obtener el json parseamos su contenido y con ello obtenemos un dataframe con los datos que utilizaremos como el nombre de usuario, la ubicación del usuario, la coordenadas geográficas, el texto publicado y la hora de la publicación.
#Obté dataframe amb exploits (tota la info)
exploitsDB <- SoCoTools::get_exploitdb(7)
# Obté la data dels exploits
date <- paste(exploitsDB$date, sep=" ")
#n <- vapply(strsplit(tweet_search[2], "\\W+"), length, integer(1))
# Obtenció del que s'ha de buscar
tweet_search <- paste(exploitsDB$platform, exploitsDB$type ,exploitsDB$subtype, sep=" ")
tweet_search <- gsub("[^[:alnum:][:blank:]+?&/\\-]", "", tweet_search)
tweet_search <- gsub("[0-9]+","",tweet_search)
tweet_search <- sub("/", " ",tweet_search)
tweet_search <- sub(" ", "",tweet_search)
# En aquest punt tweet_search conté tots els valors a buscar sense carà cters especials i números
# Si es vol busccar per hashtags executar les següents comandes
tweet_search <- gsub(" ", " #", tweet_search)
tweet_search <- paste("#", tweet_search, sep="")
A continuación, se muestran las vulnerabilidades de los últimos 7 dÃas.
## [1] "Vulnerabilidad 1 : linux dos Heap Overflow"
## [2] "Vulnerabilidad 2 : windows local Local CA root Incorrectly Protected"
## [3] "Vulnerabilidad 3 : windows remote FTP Buffer Overflow SEH"
## [4] "Vulnerabilidad 4 : windows remote chakradll Info Leak Type Confusion Remote Code Execution"
## [5] "Vulnerabilidad 5 : winx- shellcode Password Protected Bind Shellcodebytes"
## [6] "Vulnerabilidad 6 : php webapps Authentication Bypass"
## [7] "Vulnerabilidad 7 : php webapps AIO PwnScriptum Remote Code Execution"
## [8] "Vulnerabilidad 8 : jsp webapps Persistent Cross-Site Scripting"